<?php
$conn_args = array(
	'host' => '192.168.110.130',
	'port' => '5672',
	'login' => 'root',
	'password' => 'root',
	'vhost'=>'/'
);

$exchange_name = 'topic_exchange';	//交换机名
// $queue_name = 'topic_queue';		//队列名（topic不需要队列名）
// $routing_key = 'com';
// $routing_key = 'com.*';
$routing_key = 'com.#';

//创建连接和channel
$conn = new AMQPConnection($conn_args);
if (!$conn->connect()) {
	die("连接RabbitMQ失败！");
}
$channel = new AMQPChannel($conn);

//创建交换机
$exchange = new AMQPExchange($channel);
$exchange->setName($exchange_name);
$exchange->setType(AMQP_EX_TYPE_TOPIC); //topic类型
$exchange->setFlags(AMQP_DURABLE); //持久化
$exchange->declareExchange();

//创建队列
$queue = new AMQPQueue($channel);
// $queue->setName($queue_name);	//队列名（topic不需要队列名）
$queue->setFlags(AMQP_DURABLE);	//持久化
$queue->declareQueue();	//最好队列object在这里declare()下，否则如果是新的queue会报错

//绑定交换机与队列，并指定路由键，可以多个路由键
$queue->bind($exchange_name, $routing_key);

echo "Message：" . PHP_EOL;
//非阻塞模式接收消息【推荐使用】（拿一条，消费一条）
$i = 0;
while(True){
	$arr = $queue->get();
	if($arr){
		$res = $queue->ack($arr->getDeliveryTag());	//手动发送ACK应答（注释这一行，会导致消息变成“Unacked”状态）
		$msg = $arr->getBody();
		echo $msg . PHP_EOL;
	}else{
		echo ++$i."、等待消息。。。【 " . $routing_key. " 】".PHP_EOL;
	}
	usleep(1000 * 1000);
}






?>

